This document describes the functions contained in the mLOGINx.OBJ files. These functions allow you to perform a keyed login to a NetWare 3.x file server as well as change or verify a bindery object's password. These OBJs can be linked with languages using the Microsoft segment naming conventions.
Object Naming Convention:
mLOGIN.OBJ
m is one of S,M,C or L for Small, Medium, Compact and Large
The VAP objects have a 'v' appended to the root name. i.e.
sLOGINv.OBJ - Small Model VAP object
IMPORTANT NOTES:
These functions all assume that you are attached, and the preferred connection is set to the server that you want to login to or change the password on. You must perform these APIs before calling the functions in this object, or they will not work.
All Functions require approximately 220 bytes of stack space for local variables. This does not include the overhead for calling DOS or the shell via Int 21h. You must provide sufficient stack space for this. VAP users need to allow for overhead of the NetWareShellServices API.
Objects are provided for the SMALL, MEDIUM, COMPACT and LARGE memory models. There are three functions included in each object module:
ObjOldPass - A pointer to the Object's old Password.
ObjNewPass - A pointer to the Object's new Password.
NOTE:
All pointers are model dependant. i.e. 2 byte for small and medium model or 4 byte for compact and large.
Also, a global variable called __AsmDataElement has been declared. __AsmDataElement is used to establish DS addressability BEFORE calling any of the other APIs. This is ONLY needed if DS is NOT pointing to DGROUP. If you will be calling the APIs without DS pointing to DGROUP, you need to establish addressability first. To do this, just "MOV AX,SEG __AsmDataElement", and "MOV DS,AX" before calling the API. Be sure to save DS for your program! All functions return a status code in the AX register. See your System Calls Documentation for a description of the return codes.
Only registers SI, DI, BP, DS and ES are preserved. All others are destroyed.
To call any of these functions, simply push the parameters onto the stack in the reverse order i.e. right to left. Be sure to pass the correct pointer size! Following are samples for calling a small and large model function.